import java.util.Scanner;

public class Test10 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            int m = in.nextInt();
            int x = in.nextInt();
            int y = in.nextInt();

            boolean[][] b = new boolean[n + 1][m + 1] ;
            b = inmit(x, y, b, n + 1, m + 1);
            int sum = sumPath(n, m, b);
            System.out.println(sum);
        }
    }
    public static int sumPath(int x, int y, boolean[][] b) {
        if (b[x][y]) {
            return 0;
        }
        if (x == 0 && y == 0) {
            return 1;
        } else {
            int sum = 0;
            if (x == 0) {
                sum = sumPath(x, y - 1, b);
            } else if (y == 0) {
                sum = sumPath(x - 1, y, b);
            } else {
                sum += sumPath(x - 1, y, b) + sumPath(x, y - 1, b);
            }
            return  sum;
        }
    }
    public static boolean[][] inmit(int x, int y, boolean[][] b, int n, int m) {

        if (x + 2 < n && x + 2 > 0 && y + 1 < m && y + 1 > 0) {
            b[x + 2][y + 1] = true;
        }//p1
        if (x + 1 < n && x + 1 > 0 && y + 2 < m && y + 2 > 0) {
            b[x + 1][y + 2] = true;
        }//p2
        if ( x - 1 >= 0 && x - 1 < n && y + 2 < m && y + 2 > 0) {
            b[x - 1][y + 2] = true;
        }//p3

        if (x - 2 >= 0 && x - 2 < n && y + 1 < m && y + 1 > 0) {
            b[x - 2][y + 1] = true;
        }//p4
        if (x - 2 >= 0  && x - 2 < n && y - 1 > 0 && y - 1 < m) {
            b[x - 2][y - 1] = true;
        }//p5
        if (x - 1  < n && x - 1 > 0 && y - 2 > 0 && y - 2 < m) {
            b[x - 1][y - 2] = true;
        }//p6
        if (x + 1  < n && x + 1 > 0 &&  y - 2 > 0 && y - 2 < m) {
            b[x + 1][y - 2] = true;
        }//p7
        if (x + 2 < n && x + 2 > 0 && y - 1 > 0 && y - 1 < m) {
            b[x + 2][y - 1] = true;
        }//p8
        if (x < n && y < m) {
            b[x][y] = true;
        }

        return b;
    }











    public static void main02(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            int[] price=new int[n];
            for(int i=0;i< n;i++){
                price[i]=in.nextInt();
            }

            int left=0,right=n-1;
            int sum=0;
            while(left < right){
                if(price[left] > price[ right]){
                    left++;
                }else{
                    int a=price[right] - price[left];
                    sum = (sum > a) ? sum :a;
                    right--;
                }
                if(left== n-1){
                    left=0;
                    right--;
                }
            }
            System.out.println(sum);
        }
    }












    public static void main01(String[] args) {
        String A="ababc";
        int a=getLongestPalindrome(A);
        System.out.println(a);
    }

    public static int getLongestPalindrome (String A) {
        // write code here

        String str = new String();
        int n = A.length();
        for (int i = 0; i < n - 1; i++) {
            int left = i, right = n - 1;
            int purLeft = -1, purRight = -1;
            boolean b = false;

            while (left < right) {
                // 判断是否相等
                if (A.charAt(left) == A.charAt(right)) {

                    // 相等就记录此时的左右下标
                    if (!b) {
                        purLeft = left;
                        purRight = right;
                    }
                    b = true;
                    left++;
                    right--;

                } else {
                    // 不相等就重来
                    left = i;
                    right--;
                    purLeft = -1;
                    purRight = -1;
                    b = false;
                }
            }

            if(str.length() <purRight-purLeft+1){
                for(int j=purLeft;j<=purRight;j++){
                    str+=A.charAt(j);
                }
            }
        }

        return str.length();
    }
}
